package org.dreamfly.core.service;

import org.dreamfly.core.bean.SzPicture;
import org.dreamfly.core.page.PageResultSet;

import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: Gin
 * Date: 2010-9-15
 * Time: 22:03:34
 * To change this template use File | Settings | File Templates.
 */
public interface PictureService {
    /**
     * 关键字搜索
     * @param picture 含有搜索信息的图片对象
     * @param serverName 
     * @return 包含结果集和分页信息的数据集
     */
	PageResultSet<SzPicture> normalSearch(SzPicture picture, Long pageSize, Long page, String serverName);
	
	Long findCount(String pictureDir);
	
	Long findCount(String pictureDir, List<Long> szPictureTypeIds);
	
	List<SzPicture> test(SzPicture picture, Long pageSize, Long page);
    /**
     * 删除图片及特征库中索引和缩略图
     * @param pictureId
     */
    void delete(Long pictureId);

    /**
     * 保存或更新图片
     * @param picture 需要修改的图片
     */
    void saveOrUpdate(SzPicture picture);

    /**
     * 查询图片详细信息
     * @param id  
     * @return 图片对象
     */
    SzPicture findDetail(Long id);
    
    /**
     * 显示指定类型图片
     * @param   pictureType 图片类型
     * @param   pageSize 每页大小
     * @param   page 显示数据的页
     * @return  包含结果集和分页信息的数据集
     */
    PageResultSet<SzPicture> findByType(Long pictureTypeId,Long pageSize,Long Page);
    
    /**
     * 搜索指定类型图片
     * @param   szPictureTypeIds 图片类型id集合
     * @param   picture 含有搜索信息的图片对象
     * @param   pageSize 每页大小
     * @param   page 显示数据的页
     * @return  包含结果集和分页信息的数据集
     */
    PageResultSet<SzPicture> normalSearchByType(List<Long> szPictureTypeIds,SzPicture picture, String isAdmin, Long pageSize,Long page);
    
    /**
     * 基于内容搜索全部类型图片
     * @param   pictureURL 索引目录
     * @param   pictureDir 图片地址
     * @param   pageSize 每页大小
     * @param   page 显示数据的页
     * @return  包含结果集和分页信息的数据集
     */
    List<SzPicture> contentSearch(String pictureDir, Long pageSize, Long page);
    /**
     * 基于内容搜索指定类型图片
     * @param   szPictureTypeIds 图片类型id集合
     * @param   pictureURL 索引目录
     * @param   pictureDir 图片地址
     * @param relativePictureDir
     * @param   pageSize 每页大小
     * @param   page 显示数据的页
     * @return  包含结果集和分页信息的数据集
     */
    List<SzPicture> contentSearchByType(List<Long> szPictureTypeIds, String relativePictureDir, Long pageSize, Long page);

    /**
     * 完善图片信息
     * @param picture
     */
    void addPicInfo(SzPicture picture);

    void modifyPicInfo(SzPicture picture);
}
